/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.qsoft.bean;

import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.context.effects.JavascriptContext;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.el.ValueExpression;
import javax.faces.application.Application;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Admin
 */
@ManagedBean(name = "eventos")
@SessionScoped

public class eventosBakenBean {
    @ManagedProperty(value="#{navegacion}")
    private navegacionBakenBean navBean;
    
    //Contantes
    public static int CERRAR = 1;
    public static int ACEPTAR_CANCELAR = 2;
    //Propiedades del Popup
    private boolean popup_visible = false;
    private String popup_header = "";
    private String popup_conten = "";
    private HtmlCommandButton btn_1;
    private HtmlCommandButton btn_2;
    private int tipo_ventana = 1;
    // 1 Aceptar 2 Cerrar o Cancelar
    private int opcion_presionada = 2;
    
    public int getOpcion_presionada() {
        return opcion_presionada;
    }

    public void setOpcion_presionada(int opcion_presionada) {
        this.opcion_presionada = opcion_presionada;
    }

    public int getTipo_ventana() {
        return tipo_ventana;
    }

    public void setTipo_ventana(int tipo_ventana) {
        this.tipo_ventana = tipo_ventana;
    }

    public HtmlCommandButton getBtn_1() {
        return btn_1;
    }

    public void setBtn_1(HtmlCommandButton btn_1) {
        this.btn_1 = btn_1;
    }

    public HtmlCommandButton getBtn_2() {
        return btn_2;
    }

    public void setBtn_2(HtmlCommandButton btn_2) {
        this.btn_2 = btn_2;
    }

    public navegacionBakenBean getNavBean() {
        return navBean;
    }

    public void setNavBean(navegacionBakenBean navBean) {
        this.navBean = navBean;
    }

    /** Creates a new instance of eventosBakenBean */
    public eventosBakenBean() {
    }

    public void cambiar_pagina(ActionEvent evt) {
        String pagina = evt.getComponent().getAttributes().get("pagina").toString();
        pagina = "./../webapp/" + pagina;

//        Object navegacionObjeto = facesContext.getApplication().createValueBinding("#{navegacionBakenBean}").getValue(facesContext);
//
//        if (navegacionObjeto != null &&
//                navegacionObjeto instanceof navegacionBakenBean) {
//           navegacionBakenBean nav=((navegacionBakenBean) navegacionObjeto);
//           nav.setPagina_contenido(pagina);
//        }

        getNavBean().setPagina_contenido(pagina);
        
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:txt_cedularuc");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:txt_busca");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_ciudad");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_inspector");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_agencia");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_motivo");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_novedad");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_campo");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_liquidador");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:new_tiposervicio");
        JavascriptContext.applicationFocus(FacesContext.getCurrentInstance(), "form_sistema:auto_completar");
        ///Limpiar objetos de los Beans por que el bean persiste por que la navegacion dinamica se realiza con ajax
        FacesContext context = FacesContext.getCurrentInstance();
//        if (evt.getComponent().getId().equals("new_inspeccion")) {
//            Application app = context.getApplication();
//            ValueExpression expression = app.getExpressionFactory().createValueExpression(context.getELContext(), "#{inspeccionBakenBean}", Object.class);
//            Object bean_insp = expression.getValue(context.getELContext());
//            if (bean_insp != null && bean_insp instanceof inspeccionBakenBean) {
//                try {
//                    ((inspeccionBakenBean) bean_insp).limpiar_formulario();
//                } catch (Exception ex) {
//                    Logger.getLogger(eventosBakenBean.class.getName()).log(Level.INFO, ex.getMessage());
//                }
//            }
//        }
    }

    public String getPopup_conten() {
        return popup_conten;
    }

    public void setPopup_conten(String popup_conten) {
        this.popup_conten = popup_conten;
    }

    public String getPopup_header() {
        return popup_header;
    }

    public void setPopup_header(String popup_header) {
        this.popup_header = popup_header;
    }

    public boolean isPopup_visible() {
        return popup_visible;
    }

    public void setPopup_visible(boolean popup_visible) {
        //Remover todos los Listener menos el que esta en methodbindig del tag No se si estoy correcto pero se me ocurrio
//        if (popup_visible) {
//            for (int i = 1; i < getBtn_1().getActionListeners().length; i++) {
//                System.out.println("Removiendo el Listener :" + getBtn_1().getActionListeners()[i].toString());
//                getBtn_1().removeActionListener(getBtn_1().getActionListeners()[i]);
//            }
//        }
        if (tipo_ventana == ACEPTAR_CANCELAR) {
            getBtn_1().setVisible(true);
            getBtn_2().setValue("Cancelar");
        } //Default config
        if (tipo_ventana == CERRAR) {
            getBtn_1().setVisible(false);
            getBtn_2().setValue("Cerrar");
        }
        this.popup_visible = popup_visible;
    }

    public void cierra_popup(ActionEvent evt) {
        try {
            HtmlCommandButton btn_pres = (HtmlCommandButton) evt.getComponent();
            if (btn_pres.getValue().equals("Aceptar")) {
                setOpcion_presionada(1);
            } else {
                setOpcion_presionada(2);
            }
        } catch (Exception e) {
            //Revisar esto lo puse por saltar la validacion del boton cerrar de la imagen no posee value seteado
            System.out.println(e);
            System.out.println("Revisar esto lo puse por saltar la validacion del boton cerrar de la imagen no posee value seteado....");
        }
        setPopup_visible(false);
    }

    public void limpiar_listener() {
        for (int i = 1; i < getBtn_1().getActionListeners().length; i++) {
            System.out.println("Removiendo el Listener :" + getBtn_1().getActionListeners()[i].toString());
            getBtn_1().removeActionListener(getBtn_1().getActionListeners()[i]);
        }
    }
}
